1. Field of the Invention
This invention relates generally to the field of computing technology and more particularly concerns the initialization routine, or boot sequence, of a computer system which prepares the system for loading an operating system.
2. Description of the Related Art
During a computer system""s initialization routine, commonly referred to as a boot sequence, a variety of diagnostics are performed by the computer system to ascertain the availability and status of hardware devices and ensure proper operation of components. During initialization, a program counter informs the central processing unit (CPU) of the address of the next instruction needed for processing. Here the address is the beginning of a boot program permanently stored in a set of ROM chips that comprise part of the system BIOS and contain the computer""s basic input/output system (BIOS).
Upon execution of system BIOS, the boot program invokes a series of system checks to ascertain the location, number and identity of various devices associated with the computer system. To accomplish this, the CPU transmits signals over buses to the motherboard""s various expansion slots to ensure their associated adapter cards are functioning properly. While the predominant type of expansion slot employed today utilizes either the peripheral component interconnect (PCI) or the newer accelerated graphics port (AGP), other types of buses including video electronics standards association local bus (VL-BUS), industry standard architecture (ISA) and extended industry standard architecture (EISA) are also employed to a lesser extent. Residing within the respective expansion slots may be a variety of adapter cards which may include, by way of example only, a network adapter card, a SCSI card or other similar device.
Also associated with these adapters, such as adapter card 80 in prior art FIG. 1, is a firmware code known as the option ROM BIOS. The adapter""s option ROM BIOS chip 70 includes an associated BIOS image 72 which is in part characterized by a specific PCI device ID 74 located in the BIOS image""s PCI header structure 76. This PCI device ID 74 is intended to match the unique identification of the PCI device chip 90 on the adapter card 80 with which option ROM BIOS chip 70 communicates. During the initialization routine, it is necessary to incorporate each adapter""s option ROM BIOS into the system RAM as part of the computer system""s overall BIOS and memory configuration. To this end, the system BIOS 22 residing on the motherboard 40 communicates, via the PCI bus 26, with the adapter""s option ROM BIOS chip 70 to determine if a PCI device ID match exists between it and the associated PCI device chip 90. If a match does not exist, then system BIOS 22 will not permit execution of the option ROM BIOSxe2x80x94i.e. it will ignore it and not load it into the system""s overall BIOS and memory configuration.
In the past, the BIOS image associated with each option ROM BIOS chip only stores one PCI device ID in the PCI header Structure. However, as more and more PCI device chips are released by manufacturers, each chip requires a unique PCI device ID and, thus, its own BIOS image in the associated option ROM BIOS chip. Thus, it becomes necessary to keep track of these different BIOS images because, unless a match exists between the PCI device ID and the associated PCI device chip, no communication can take place with the option ROM BIOS chip. The importance and difficulty of keeping track of these different BIOS images is further complicated by the fact that there exists different families of adapters, each with different versions of PCI device chips. These families include, for example, SCSI controllers, RAID controllers, processors and bridges.
While the proliferation of these PCI device chips is primarily a problem for the manufacture and its tech support, the user might also encounter a compatibility problem from time to time. For example, if it is determined that a compatibility does not exist between the PCI device chip and its associated PCI device ID residing on the adapter card""s option ROM BIOS chip, then the user might attempt to rectify the problem by using a flash utility program whereby the user flashes a new BIOS image onto the option ROM BIOS chip. This option is available today given that newer computer systems store the BIOS on flash ROMs, namely EEPROMs, which can be erased and rewritten if the user needs to update the BIOS program. However, in the event the user inadvertently flashes the wrong BIOS image, this results in a tech support issue for the manufacturer in order to rectify the problem. This of course increases the cost of the product for the manufacturer.
As illustrated in prior art FIG. 2, the user might also encounter this compatibility problem where the PCI device chip of interest 90xe2x80x2 resides on the computer system""s motherboard 40xe2x80x2, as opposed to its adapter card 80xe2x80x2. For example, the ARO-1130 controller manufactured by Adaptec, Inc. of Milpitas, Calif., is a RAID adapter card that does not have a SCSI chip physically residing on the card. Instead, the ARO-1130 plugs into a specific motherboard provided with the appropriate SCSI chip. The option ROM BIOS chip 70xe2x80x2, though, does reside on the ARO adapter card and becomes physically connected to the SCSI chip through the PCI bus. Provided the user employs the appropriate motherboard, there is no compatibility problem between the SCSI chip on the motherboard and its associated PCI device ID residing in the BIOS image of the adapter card""s option ROM Bios chip. However, were the user to employ a different motherboard having a different SCSI chip, and therefore a different PCI device ID, then the problem arises. Again, this problem generates a tech support call because the user must update the option ROM BIOS on the adapter card which is typically accomplished by downloading a flash utility from the manufacturer capable of detecting the SCSI chip on the motherboard and flashing its corresponding BIOS.
In view of the foregoing, what is needed is a new and improved approach for optimizing the versatility of option ROM BIOS chips to accommodate different families of PCI device chips irrespective of the number of different versions of PCI device chips within each family. Such a solution would benefit the manufacturing side of operations through cost savings, time savings, etc., and also benefit the research and development side by avoiding confusion in the compatibility testing process. The appropriate solution would also benefit the user who would no longer even encounter such a compatibility problem.
The present invention fills these needs by providing a new and useful boot sequence adapted for use with a computer system during execution of the system BIOS to ensure compatibility between an option ROM BIOS chip and a chip of interest with which the option ROM BIOS chip is intended to communicate during the initial operation of the computer system. Here, the chip of interest may be one of a family of related PCI device chips (e.g., SCSI chips) each characterized by a unique PCI device ID, while the option ROM BIOS chip has a BIOS routine common to the family of chips and includes a plurality of BIOS images, each containing an image PCI device ID corresponding to the unique PCI device ID of an associated one of the chips in the family.
In a first exemplary embodiment of the present invention, there is a first one of the BIOS images which incorporates the common BIOS routine and at least one truncated BIOS image which does not. According to the boot sequence, the chip of interest is initially located. The operation of locating the chip interest includes the steps of initially finding a PCI device chip having an associated option ROM BIOS chip and then determining if the option ROM BIOS chip includes multiple BIOS images. Thereafter, the BIOS images are sequentially scanned until a determination is made that a match exists between the unique PCI device ID associated with the chip of interest and the image PCI device ID associated with a scanned one of the BIOS images. When such a determination is made, a matched image is identified. The boot sequence then insures that the first BIOS image incorporates the unique PCI device ID associated with the chip of interest. Once accomplished, the first BIOS image is loaded into system RAM and the BIOS routine is executed.
In the absence of a match between the unique PCI device ID of the chip of interest and the image PCI device ID of the first BIOS image, the operation of insuring that the first BIOS image incorporates the unique PCI device ID is accomplished by replacing the image PCI device ID of the first BIOS image with the unique PCI device ID of the chip of interest. Preferably, each truncated BIOS image includes a Chip ID Check (CIC) sub-routine so that this operation of replacement is accomplished by loading and executing the CIC sub-routine associated with the matched image. This CIC sub-routine may incorporate the operation steps of reading the image PCI device ID of the first BIOS image, flashing the PCI device ID of the first BIOS image into the PCI header structure of the matched image, and thereafter writing the PCI device ID of the matched image into the PCI header structure of the first BIOS image. Preferably the checksum of the images is recalculated and then flashed. Once the PCI device ID of the first BIOS image is replaced with the unique PCI device ID of the chip of interest, system BIOS can be restarted.
In a second exemplary embodiment of the present invention, each of the BIOS images is a complete image corresponding to a selected one of the chips in the family so that each BIOS image includes a BIOS routine and the unique chip identifier associated with a selected one of these chips. Here, the boot sequence comprises the steps of sequentially scanning each of the BIOS images to determine the existence of a match and thereafter loading into system RAM for execution a complete BIOS image corresponding to the chip of interest. Here again, it is preferred that the chip interest is a PCI device chip with its unique chip identification in the form of a PCI device ID and that the image identification associated with each BIOS image is also in the form of a PCI device ID. It should be appreciated by the ordinarily skilled artisan, however, that the boot sequence described herein can be employed with other types of chips of interest not limited specifically to PCI device chips, provided the appropriate devices in the computer system can be manufactured or modified to incorporate the boot sequence of the present invention.
In a third exemplary embodiment of the present invention a flash utility program is provided which contains a plurality of identifying information which can be permanently imbedded into a chip""s BIOS image. The flash utility program would identify a chip of interest located on an adapter card and change specific bytes which form part of the chip""s BIOS image in order to update the BIOS image and render the option ROM BIOS chip compatible with the chip of interest. To this end, the flash utility program would necessarily include certain identifying information relating to each PCI device chip in a given family of related chips.
Various hardware devices are also contemplated for use in implementing the boot sequences of the present invention. One such hardware device is in the form of a universal ROM BIOS chip that is compatible with a family of related chips and capable of communicating with a chip interest within the family during computer system operation. Here, each related chip is characterized by a unique chip identification and a common BIOS routine. The universal ROM BIOS chip may be constructed to permit implementation of the first exemplary embodiment of the boot sequence of the present invention so that it comprises a plurality of BIOS images, with a first BIOS image including the common BIOS routine and an image identification corresponding to the unique chip identification associated with a selected one of the chips in the family. The universal ROM BIOS chip also comprises a plurality of truncated BIOS images each including a respective image identification which corresponds to the unique chip identification associated with another of the chips within the family. Upon execution of system BIOS, the BIOS images can be sequentially scanned until a determination is made that a match exists between the unique chip identification associated with the chip of interest and the image identification associated with a scanned one of the BIOS images. The universal ROM BIOS chip is preferably in the form of a flash ROM integrated circuit device, such as an electronically erasable programmable read only memory (EEPROM) chip, so that, if necessary, the first BIOS image can be modified to incorporate the unique chip identification of the chip of interest to permit the system BIOS to execute the common BIOS routine.
Alternatively, the universal ROM BIOS chip could be constructed to permit implementation of the boot sequence according to the second exemplary embodiment of the present invention so that it is capable of communicating with a single-function chip of interest. Here, the universal ROM BIOS chip comprises a plurality of complete BIOS images each including the common BIOS routine and an image PCI device ID corresponding to the unique PCI device ID associated with a selected one of the PCI device chips in the family. As such, when the boot sequence determines that a match exists, the BIOS routine associated with a matched one of the BIOS images can simply be executed.
The present invention also contemplates an adapter card for use with a computer system. This adapter card broadly comprises a printed circuit board adapted to interconnect to an expansion slot on the computer system""s motherboard and a universal ROM BIOS chip which may be constructed in accordance with any one of the manners discussed above.
Other aspects and advantages of the invention will become apparent from the following detailed description, taken in conjunction with the accompanying drawings, illustrating by way of example the principles of the invention.